#ifndef SELECTIONCOMP_H
#define SELECTIONCOMP_H

#include "BaseSousSel.h"

#include <vector>

class QButtonGroup;
class QGroupBox;
class QPushButton;
class QLCDNumber;

/**
 * Classe permettant de choisir des compétences (ou autre aptitude
 * ayant un coût).
 *
 * @see  BaseSousSel
 * @author Johan "Solo" Luisier
 */
class SelectionComp : public BaseSousSel
{
  Q_OBJECT
 public:
  SelectionComp(const unsigned int& nbr, const std::string* noms,
		const std::string& titre,  const unsigned int* cout,
		const unsigned int& pp, QWidget *parent = 0);
  SelectionComp(const unsigned int& nbr, const std::vector<std::string> noms,
		const std::string& titre,  const std::vector<unsigned int> cout,
		const unsigned int& pp, QWidget *parent = 0);
  SelectionComp(const unsigned int& nbr, const std::string* noms,
		const std::vector<bool>& deja, const std::string& titre,
		const unsigned int* cout, const unsigned int& pp,
		QWidget *parent = 0);
  SelectionComp(const unsigned int& nbr, const std::vector<std::string> noms,
		const std::vector<bool>& deja, const std::string& titre, 
		const std::vector<unsigned int> cout, const unsigned int& pp,
		QWidget *parent = 0);
  SelectionComp(const SelectionComp& selComp);
  ~SelectionComp();
  StatusCode selectionFaite(std::vector<unsigned int>& vec);
  void setSelectionGroupe(const bool& selGrp);
 protected:
  /**
   * Affichage du nombre de PP restants.
   */
  QLCDNumber *nbrPP;
  /**
   * Stockage des coûts des items (contient des zéros si non
   * applicable).
   */
  std::vector<unsigned int> Cout;
  /**
   * Nombre de PP pouvant être dépensés.
   */
  int PP;
  /**
   * Variable (dés)activant la sélection du groupe entier d'item
   * proposés.
   */
  bool selectionGroupe;
 private:
  void preparerBoutons();
 private slots:
  void ajoutComp(const int& i);
  void annuler();
};

#endif // SELECTIONCOMP_H

